<?PHP
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

// Подключаем библиотеки
require_once('lib.php');

$DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);
echo "<pre>";
// Инициализируем
$DOF->storage('orders');
// Объявляем класс
class dof_im_atest_order_test extends  dof_storage_orders_baseorder
{
    /**
     * Тип плагина, объявившего тип приказа
     */
    public function plugintype()
    {
        return 'im';
    }
    /**
     * Код плагина, объявившего тип приказа
     */
    public  function plugincode()
    {
        return 'atest';
    }
    /**
     * Код типа приказа
     */
    public  function code()
    {
        return 'test';
    }
    /**
     * Исполнить действия, сопутствующие исполнению приказа 
     *
     * @param object $order
     * @return bool
     */
    protected function execute_actions($order)
    {
        echo "\nИсполнение приказа {$this->get_id()}(={$order->id}), data->testid={$order->data->testid}";
        return true;
    }
}
// Готовим объект с данными приказа
$obj = new object();
$obj->departmentid = 2;
$obj->ownerid = 3;
$obj->date = time() - 3600*24*7;
$obj->notes = "Зам\\е\\'т\\\"ка";
$obj->data->testid = 18;
$obj->data->testtext = "Про\\'ве\\\"рка!";
// Создаем объект приказа
$order = new dof_im_atest_order_test($DOF);
echo "\nСохранение приказа: ";
$order->save($obj);
// Отображаем id
if (is_int($order->get_id()))
{
    echo " {$order->get_id()} [ok]";
}
echo "\nЗапись заметки:";
if ($order->notes("testnoti\\'c\\\"e"))
{
    echo " [ok]";
}

echo "\nПроверка отсутствующей подписи:";
if (!$order->is_signed())
{
    echo " [ok]";
}
echo "\nПопытка исполнить без подписи:";
if (!$order->execute())
{
    echo " [ok]";
}
echo "\nФормирование подписи:";
if ($order->sign(4))
{
    echo " [ok]";
}
echo "\nПроверка верной подписи:";
if ($order->is_signed())
{
    echo " [ok]";
}
echo "\nИсполнение приказа:";
if ($order->execute())
{
    echo " [ok]";
}
echo "\nПопытка повторно исполнить приказ:";
if (!$order->execute())
{
    echo " [ok]";
}
echo "\nЧтение приказа:";
if ($obj2 = $order->load($order->get_id(),false))
{
    echo " [ok]";
}
echo "\nПроверяем правильность прочитанных данных:";
if (    
        $obj->departmentid == $obj2->departmentid
        AND $obj->ownerid == $obj2->ownerid
        AND $obj->date == $obj2->date
        AND "testnoti\\'c\\\"e" === $obj2->notes
        AND $obj->data->testid == $obj2->data->testid
        AND $obj->data->testtext == $obj2->data->testtext
    )
{
    echo " [ok]";
}else
{
    var_dump($obj);
    var_dump($obj2);
}
echo "\nПроверяем функцию получения шаблона (который не определен):";
if (!$order->template())
{
    // Ошаблона нет
    echo " [ok]";
}else
{
    var_dump($obj);
    var_dump($obj2);
}
echo "\nПроверяем функцию отображения приказа:";
echo $order->show();
echo "</pre>";
$DOF->modlib('nvg')->print_footer(NVG_MODE_PORTAL);



?>